#ifndef PARSER__H
#define PARSER__H
#include <string>
#include <math.h>
#include "Feed.h"
#include "News.h"

#define FIN_LINEA '\n'
#define FIN_CADENA 0
#define MIN_LINEA 128
using namespace std;

class Console{
public:
	//Crea una consola para leer.
	Console();
	virtual ~Console();
	//Ejecuta el comando junto con sus argumentos
	bool run(const string & command, const string & arguments);
	//Para indicarle que termine de usar el recurso.
	void dispose();
	//Devuevle true si pudo leer, y deja el resultado en line
	bool getLine(string &line);


private:
	FILE * pipe;
	char * linea;
	bool getLinea(string& salida);
	string mode;
	Console(const Console& c);
	Console  & operator=(const Console &c);
};

class Parser{

public:
	enum status {feedok=0,feedupdated,feedbad,nofeed,nocommand};
	//Crea un Parser, y se le especifica el comando para ejecutar el 'plugin'
	Parser(const string & command);
	virtual ~Parser(){};
	//Parsea un Feed, pasandole la URL
	unsigned int Parse(const string & url, Feed & feed);

private:
	string command;
	Console console;

};

#endif
